package com.tomdd.config;

import com.tomdd.message.MessageRouter;
import com.tomdd.message.handler.ImageMessageHandler;
import com.tomdd.message.handler.TextMessageHandler;
import com.tomdd.message.handler.VideoMessageHandler;
import com.tomdd.message.handler.VoiceMessageHandler;
import lombok.AllArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import static com.tomdd.message.enums.MessageTypeEnum.*;

/**
 * @author zx
 * @date 2025年04月25日 14:42
 */
@Configuration
@AllArgsConstructor
public class MessageConfig {
    private final ImageMessageHandler imageMessageHandler;
    private final TextMessageHandler textMessageHandler;
    private final VideoMessageHandler videoMessageHandler;
    private final VoiceMessageHandler voiceMessageHandler;


    @Bean
    public MessageRouter messageRouter() {
        // 一个路由器包含了多个路由规则
        // 一个路由规则 归属 某个路由器。
        // 路由器和路由规则关系: 一对多;
        // 这里限制规定: 一个路由规则只能属于一个路由器。

        //路由器
        final MessageRouter newRouter = new MessageRouter();
        //设置路由规则
        newRouter.rule().async(false).msgType(TEXT).handler(this.textMessageHandler).end();
        newRouter.rule().async(false).msgType(IMAGE).handler(this.imageMessageHandler).end();
        newRouter.rule().async(false).msgType(VOICE).handler(this.voiceMessageHandler).end();
        newRouter.rule().async(false).msgType(VIDEO).handler(this.videoMessageHandler).end();
        return newRouter;
    }


}
